
using System.Collections;
using Qdb.Ext;
using Qdb.Foundation;
using Qdb.Internal;
using Qdb.Internal.Callbacks;
using Qdb.Internal.Query;
using Qdb.Reflect;

namespace Qdb.Internal
{
	/// <exclude></exclude>
	public partial interface IInternalObjectContainer : IExtObjectContainer
	{
		void Callbacks(ICallbacks cb);

		ICallbacks Callbacks();

		ObjectContainerBase Container
		{
			get;
		}

		Qdb.Internal.Transaction Transaction
		{
			get;
		}

		void OnCommittedListener();

		NativeQueryHandler GetNativeQueryHandler();

		ClassMetadata ClassMetadataForReflectClass(IReflectClass reflectClass);

		ClassMetadata ClassMetadataForName(string name);

		ClassMetadata ClassMetadataForID(int id);

		HandlerRegistry Handlers
		{
			get;
		}

		Config4Impl ConfigImpl
		{
			get;
		}

		object SyncExec(IClosure4 block);

		int InstanceCount(ClassMetadata clazz, Qdb.Internal.Transaction trans
			);

		bool IsClient
		{
			get;
		}

		void StoreAll(Qdb.Internal.Transaction trans, IEnumerator objects);
	}
}
